Decisions and Loops
Control structures
|
|
|
|
Not always do you want to perform a
sequential set of statements. In order to control when the statements
perform, control structures are used. |
|
Conditional statement: |
|
if
else |
|
Selection statement: |
|
switch
|
|
Iterative statements: |
|
for, continue, break |
|
while and do
. While |
|
goto statement |
The flow of control
|
|
|
If a program has three parts, called Start,
Middle, and End, the flow of control could look like: |
Branching
statement
Example (Step 1)
Branching statement
Example (Step 2)
Branching statement
Example (Step 3)
Branching statement
Example (Step 4)
if
else
if
else
Variations
if
else
An example
Nesting control
statement
Example (Step 1)
Nesting control statement
Example (Step 2)
Nesting control statement
Example (Step 3)
Nesting control statement
Example (Step 4)
if
else
Pascal C/C++
switch
Switch
Example
switch
Importance of break
switch
Importance of break
switch
Pascal C/C++
|
|
|
case i of |
|
1: write(one); |
|
2: write(two); |
|
3: write(three); |
|
4: begin |
|
write(four); |
|
i := 3 |
|
end |
|
otherwise |
|
write(Bad value) |
|
end; |
switch
(Cont.)
Pascal C/C++
|
|
|
case i of |
|
0: write(ZeroOne); |
|
1: write(One) |
|
end; |
Loop (while)
Example (Step 1)
Loop (while)
Example (Step 2)
Loop (while)
Example (Step 3)
Loop (while)
Example (Step 4)
while
do
while
while and do
.
while
Pascal C/C++
|
|
|
while x < y do |
|
x := 2 * x |
|
|
Loop (for)
Example (Step 1)
Loop (for)
Example (Step 2)
Loop (for)
Example (Step 3)
Loop (for)
Example (Step 4)
for
for
Pascal C/C++
|
|
|
for i := 1 to n do |
|
x[i] := 0 |
|
|
break, continue
|
|
|
|
C provides two commands to control how
we loop: |
|
break -- exit form loop or switch. |
|
continue -- skip 1 iteration of loop. |
|
|
break
Pascal C/C++
|
|
|
if, while, repeat, for, or case |
|
begin |
|
|
|
|
|
goto 1 |
|
|
|
end; |
|
1: |
break
(Cont.)
Pascal C/C++
|
|
|
while, repeat, or for |
|
begin |
|
|
|
|
|
goto 1 |
|
|
|
1: |
|
end; |
return
Pascal C/C++
|
|
|
procedure p
|
|
. |
|
goto 1; |
|
|
|
1: |
|
end |
return
(Cont.)
Pascal C/C++
|
|
|
function f
|
|
. |
|
f := somevalue; |
|
goto 1; |
|
|
|
1: |
|
end |
The goto statement
|
|
|
|
goto statement unconditionally
transfers control to the statement with the given label. |
|
A label is an identifier followed by a
colon: |
|
|
|
goto label; |
|
label: do something; |
goto
Pascal C/C++
Debugging and breakpoints
Control
structures
Things to remember
|
|
|
Use = for assignment, == for
comparisons |
|
Logical && and || are short
circuits |
|
Use break to implement multiple exits
from loops |
|
For each case in a switch statement,
there should be a break statement unless required otherwise. |